#pragma once

#include "WorldObject.h"
#include "LGrammar.h"
#include <list>

class TreeBuilder {
public:
	static std::list<WorldObject*> getTrees(float minx, float maxx, float minz, float maxz, unsigned int saturation=300, unsigned int seed=0);
	static WorldObject* createTree(float x, float y, float z, int type = 0);
private:
	TreeBuilder();
	TreeBuilder(const TreeBuilder&);
	TreeBuilder &operator=(const TreeBuilder&);
	~TreeBuilder();
	static LGrammar* getRandomGrammar(void);
	static LGrammar* getRandomGrammar2(void);
	static LGrammar* getSymmetricGrammar(void);
	static LGrammar* getWeirdGrammar(void);
	static LGrammar* getFlowerGrammar(void);
	static unsigned int hash(float x, float z, unsigned int seed);
};